<html>
<head>
	<title>Serialization benchmark results</title>
	<link href='default.css' rel='stylesheet' type='text/css' />
</head>
<body>

<h2>Results of <span>Northwind database rows serialization</span> benchmarks run at 05/02/2010</h2>
<span class="summary">These benchmarks show the total time in ticks (1/1000ms) that it takes each serializer to serialize and deserialize the first row from each table in the  <a href='http://code.google.com/p/servicestack/source/browse/trunk/Common/Northwind.Benchmarks/Northwind.Common/DataModel/NorthwindData.cs'>Northwind Database</a><strong>10000</strong> Times. <br/><br/>The full source code of the serialization benchmarks (which generated this report) is <a href='http://code.google.com/p/servicestack/source/browse/trunk/Common/Northwind.Benchmarks/Northwind.Benchmarks.Console/Program.cs'>available here</a>.</span><div id='combined'>
<h3>Combined results of all benchmarks below</h3><table>
<caption>* All times measured in ticks and payload size in bytes</caption><thead><tr><th>Serializer</th><th>Payload size</th><th>Larger than best</th><th>Serialization</th><th>Deserialization</th><th>Total</th><th>Avg per iteration</th><th>Slower than best</th></tr></thead>
<tbody>
<tr class=''><th class='c1'>Microsoft DataContractSerializer</th><td>3645</td><th>4.36x</th><td>21923927</td><td>62545089</td><td>84469016</td><td>844.6902</td><th>6.92x</th></tr><tr class=''><th class='c1'>Microsoft JsonDataContractSerializer</th><td>1771</td><th>2.12x</th><td>42078397</td><td>98963388</td><td>141041785</td><td>1410.4178</td><th>11.55x</th></tr><tr class=''><th class='c1'>Microsoft BinaryFormatter</th><td>4419</td><th>5.29x</th><td>59226265</td><td>50267981</td><td>109494246</td><td>1094.9425</td><th>8.97x</th></tr><tr class=''><th class='c1'>NewtonSoft.Json</th><td>1825</td><th>2.18x</th><td>24894038</td><td>67931436</td><td>92825474</td><td>928.2547</td><th>7.60x</th></tr><tr class='best-size best-time'><th class='c1'>ProtoBuf.net</th><td>836</td><th>1x</th><td>5675904</td><td>6531527</td><td>12207431</td><td>122.0743</td><th>1x</th></tr><tr class=''><th class='c1'>ServiceStack TypeSerializer</th><td>1397</td><th>1.67x</th><td>14708040</td><td>8753614</td><td>23461654</td><td>234.6165</td><th>1.92x</th></tr><tr class=''><th class='c1'>Platform TextSerializer</th><td>1544</td><th>1.85x</th><td>8385023</td><td>17692036</td><td>26077059</td><td>260.7706</td><th>2.14x</th></tr>
</tbody>
</table>
</div>
<h3>Results of serializing and deserializing CategoryDto 100000 times</h3><table>
<caption>* All times measured in ticks and payload size in bytes</caption><thead><tr><th>Serializer</th><th>Payload size</th><th>Larger than best</th><th>Serialization</th><th>Deserialization</th><th>Total</th><th>Avg per iteration</th><th>Slower than best</th></tr></thead>
<tbody>
<tr class=''><th class='c1'>Microsoft DataContractSerializer</th><td>275</td><th>4.74x</th><td>1697880</td><td>4907329</td><td>6605209</td><td>66.0521</td><th>8.35x</th></tr><tr class=''><th class='c1'>Microsoft JsonDataContractSerializer</th><td>95</td><th>1.64x</th><td>3065194</td><td>7866799</td><td>10931993</td><td>109.3199</td><th>13.81x</th></tr><tr class=''><th class='c1'>Microsoft BinaryFormatter</th><td>329</td><th>5.67x</th><td>4288182</td><td>4171317</td><td>8459499</td><td>84.5950</td><th>10.69x</th></tr><tr class=''><th class='c1'>NewtonSoft.Json</th><td>110</td><th>1.90x</th><td>1493134</td><td>4263942</td><td>5757076</td><td>57.5708</td><th>7.27x</th></tr><tr class='best-size best-time'><th class='c1'>ProtoBuf.net</th><td>58</td><th>1x</th><td>394661</td><td>396764</td><td>791425</td><td>7.9142</td><th>1x</th></tr><tr class=''><th class='c1'>ServiceStack TypeSerializer</th><td>87</td><th>1.5x</th><td>1015711</td><td>452278</td><td>1467989</td><td>14.6799</td><th>1.85x</th></tr><tr class=''><th class='c1'>Platform TextSerializer</th><td>89</td><th>1.53x</th><td>461429</td><td>750469</td><td>1211898</td><td>12.1190</td><th>1.53x</th></tr>
</tbody>
</table>
<h3>Results of serializing and deserializing CustomerDto 100000 times</h3><table>
<caption>* All times measured in ticks and payload size in bytes</caption><thead><tr><th>Serializer</th><th>Payload size</th><th>Larger than best</th><th>Serialization</th><th>Deserialization</th><th>Total</th><th>Avg per iteration</th><th>Slower than best</th></tr></thead>
<tbody>
<tr class=''><th class='c1'>Microsoft DataContractSerializer</th><td>482</td><th>3.74x</th><td>2487721</td><td>7518168</td><td>10005889</td><td>100.0589</td><th>5.52x</th></tr><tr class=''><th class='c1'>Microsoft JsonDataContractSerializer</th><td>256</td><th>1.98x</th><td>3775409</td><td>10137585</td><td>13912994</td><td>139.1299</td><th>7.68x</th></tr><tr class=''><th class='c1'>Microsoft BinaryFormatter</th><td>635</td><th>4.92x</th><td>6752220</td><td>6553395</td><td>13305615</td><td>133.0562</td><th>7.34x</th></tr><tr class=''><th class='c1'>NewtonSoft.Json</th><td>271</td><th>2.10x</th><td>2836857</td><td>6840051</td><td>9676908</td><td>96.7691</td><th>5.34x</th></tr><tr class='best-size best-time'><th class='c1'>ProtoBuf.net</th><td>129</td><th>1x</th><td>801405</td><td>1010555</td><td>1811960</td><td>18.1196</td><th>1x</th></tr><tr class=''><th class='c1'>ServiceStack TypeSerializer</th><td>202</td><th>1.57x</th><td>1466061</td><td>1157556</td><td>2623617</td><td>26.2362</td><th>1.45x</th></tr><tr class=''><th class='c1'>Platform TextSerializer</th><td>222</td><th>1.72x</th><td>1227506</td><td>2238202</td><td>3465708</td><td>34.6571</td><th>1.91x</th></tr>
</tbody>
</table>
<h3>Results of serializing and deserializing EmployeeDto 100000 times</h3><table>
<caption>* All times measured in ticks and payload size in bytes</caption><thead><tr><th>Serializer</th><th>Payload size</th><th>Larger than best</th><th>Serialization</th><th>Deserialization</th><th>Total</th><th>Avg per iteration</th><th>Slower than best</th></tr></thead>
<tbody>
<tr class=''><th class='c1'>Microsoft DataContractSerializer</th><td>851</td><th>2.43x</th><td>4101589</td><td>10437475</td><td>14539064</td><td>145.3906</td><th>4.73x</th></tr><tr class=''><th class='c1'>Microsoft JsonDataContractSerializer</th><td>598</td><th>1.71x</th><td>7266103</td><td>22440871</td><td>29706974</td><td>297.0697</td><th>9.67x</th></tr><tr class=''><th class='c1'>Microsoft BinaryFormatter</th><td>1092</td><th>3.12x</th><td>15346067</td><td>9718183</td><td>25064250</td><td>250.6425</td><th>8.16x</th></tr><tr class=''><th class='c1'>NewtonSoft.Json</th><td>607</td><th>1.73x</th><td>6408809</td><td>17274106</td><td>23682915</td><td>236.8292</td><th>7.71x</th></tr><tr class='best-size best-time'><th class='c1'>ProtoBuf.net</th><td>350</td><th>1x</th><td>1402668</td><td>1669899</td><td>3072567</td><td>30.7257</td><th>1x</th></tr><tr class=''><th class='c1'>ServiceStack TypeSerializer</th><td>495</td><th>1.41x</th><td>3525260</td><td>2429218</td><td>5954478</td><td>59.5448</td><th>1.94x</th></tr><tr class=''><th class='c1'>Platform TextSerializer</th><td>555</td><th>1.59x</th><td>2392183</td><td>5371679</td><td>7763862</td><td>77.6386</td><th>2.53x</th></tr>
</tbody>
</table>
<h3>Results of serializing and deserializing EmployeeTerritoryDto 100000 times</h3><table>
<caption>* All times measured in ticks and payload size in bytes</caption><thead><tr><th>Serializer</th><th>Payload size</th><th>Larger than best</th><th>Serialization</th><th>Deserialization</th><th>Total</th><th>Avg per iteration</th><th>Slower than best</th></tr></thead>
<tbody>
<tr class=''><th class='c1'>Microsoft DataContractSerializer</th><td>233</td><th>12.94x</th><td>1481352</td><td>4531073</td><td>6012425</td><td>60.1242</td><th>10.89x</th></tr><tr class=''><th class='c1'>Microsoft JsonDataContractSerializer</th><td>38</td><th>2.11x</th><td>2687951</td><td>6004863</td><td>8692814</td><td>86.9281</td><th>15.75x</th></tr><tr class=''><th class='c1'>Microsoft BinaryFormatter</th><td>234</td><th>13x</th><td>3227166</td><td>3380161</td><td>6607327</td><td>66.0733</td><th>11.97x</th></tr><tr class=''><th class='c1'>NewtonSoft.Json</th><td>53</td><th>2.94x</th><td>1488802</td><td>3464752</td><td>4953554</td><td>49.5355</td><th>8.97x</th></tr><tr class='best-size best-time'><th class='c1'>ProtoBuf.net</th><td>18</td><th>1x</th><td>364511</td><td>187584</td><td>552095</td><td>5.5210</td><th>1x</th></tr><tr class=''><th class='c1'>ServiceStack TypeSerializer</th><td>43</td><th>2.39x</th><td>851853</td><td>325544</td><td>1177397</td><td>11.7740</td><th>2.13x</th></tr><tr class=''><th class='c1'>Platform TextSerializer</th><td>34</td><th>1.89x</th><td>374102</td><td>489770</td><td>863872</td><td>8.6387</td><th>1.56x</th></tr>
</tbody>
</table>
<h3>Results of serializing and deserializing OrderDetailDto 100000 times</h3><table>
<caption>* All times measured in ticks and payload size in bytes</caption><thead><tr><th>Serializer</th><th>Payload size</th><th>Larger than best</th><th>Serialization</th><th>Deserialization</th><th>Total</th><th>Avg per iteration</th><th>Slower than best</th></tr></thead>
<tbody>
<tr class=''><th class='c1'>Microsoft DataContractSerializer</th><td>282</td><th>0x</th><td>1997444</td><td>5684156</td><td>7681600</td><td>76.816</td><th>0x</th></tr><tr class=''><th class='c1'>Microsoft JsonDataContractSerializer</th><td>74</td><th>0x</th><td>3484634</td><td>7572776</td><td>11057410</td><td>110.5741</td><th>0x</th></tr><tr class=''><th class='c1'>Microsoft BinaryFormatter</th><td>315</td><th>0x</th><td>4918246</td><td>4854659</td><td>9772905</td><td>97.7290</td><th>0x</th></tr><tr class=''><th class='c1'>NewtonSoft.Json</th><td>94</td><th>0x</th><td>2855882</td><td>8725170</td><td>11581052</td><td>115.8105</td><th>0x</th></tr><tr class='failed'><th class='c1'>ProtoBuf.net</th><td>21</td><th>0x</th><td>621505</td><td>-1</td><td>621504</td><td>6.2150</td><th>0x</th></tr><tr class=''><th class='c1'>ServiceStack TypeSerializer</th><td>76</td><th>0x</th><td>1797648</td><td>882289</td><td>2679937</td><td>26.7994</td><th>0x</th></tr><tr class='failed'><th class='c1'>Platform TextSerializer</th><td>53</td><th>0x</th><td>409247</td><td>-1</td><td>409246</td><td>4.0925</td><th>0x</th></tr>
</tbody>
</table>
<h3>Results of serializing and deserializing OrderDto 100000 times</h3><table>
<caption>* All times measured in ticks and payload size in bytes</caption><thead><tr><th>Serializer</th><th>Payload size</th><th>Larger than best</th><th>Serialization</th><th>Deserialization</th><th>Total</th><th>Avg per iteration</th><th>Slower than best</th></tr></thead>
<tbody>
<tr class=''><th class='c1'>Microsoft DataContractSerializer</th><td>615</td><th>5.69x</th><td>3691718</td><td>9949004</td><td>13640722</td><td>136.4072</td><th>6.70x</th></tr><tr class=''><th class='c1'>Microsoft JsonDataContractSerializer</th><td>366</td><th>3.39x</th><td>8085873</td><td>17545602</td><td>25631475</td><td>256.3148</td><th>12.60x</th></tr><tr class=''><th class='c1'>Microsoft BinaryFormatter</th><td>758</td><th>7.02x</th><td>11201546</td><td>7841217</td><td>19042763</td><td>190.4276</td><th>9.36x</th></tr><tr class=''><th class='c1'>NewtonSoft.Json</th><td>366</td><th>3.39x</th><td>5672066</td><td>16198776</td><td>21870842</td><td>218.7084</td><th>10.75x</th></tr><tr class='best-size best-time'><th class='c1'>ProtoBuf.net</th><td>108</td><th>1x</th><td>942122</td><td>1092496</td><td>2034618</td><td>20.3462</td><th>1x</th></tr><tr class=''><th class='c1'>ServiceStack TypeSerializer</th><td>253</td><th>2.34x</th><td>3089963</td><td>2013083</td><td>5103046</td><td>51.0305</td><th>2.51x</th></tr><tr class=''><th class='c1'>Platform TextSerializer</th><td>301</td><th>2.79x</th><td>1105880</td><td>4341433</td><td>5447313</td><td>54.4731</td><th>2.68x</th></tr>
</tbody>
</table>
<h3>Results of serializing and deserializing ProductDto 100000 times</h3><table>
<caption>* All times measured in ticks and payload size in bytes</caption><thead><tr><th>Serializer</th><th>Payload size</th><th>Larger than best</th><th>Serialization</th><th>Deserialization</th><th>Total</th><th>Avg per iteration</th><th>Slower than best</th></tr></thead>
<tbody>
<tr class=''><th class='c1'>Microsoft DataContractSerializer</th><td>452</td><th>0x</th><td>2482600</td><td>7239602</td><td>9722202</td><td>97.2220</td><th>0x</th></tr><tr class=''><th class='c1'>Microsoft JsonDataContractSerializer</th><td>187</td><th>0x</th><td>4125040</td><td>10715754</td><td>14840794</td><td>148.4079</td><th>0x</th></tr><tr class=''><th class='c1'>Microsoft BinaryFormatter</th><td>508</td><th>0x</th><td>5989754</td><td>6852763</td><td>12842517</td><td>128.4252</td><th>0x</th></tr><tr class=''><th class='c1'>NewtonSoft.Json</th><td>189</td><th>0x</th><td>3431414</td><td>10802413</td><td>14233827</td><td>142.3383</td><th>0x</th></tr><tr class=''><th class='c1'>ProtoBuf.net</th><td>40</td><th>0x</th><td>540652</td><td>198168</td><td>738820</td><td>7.3882</td><th>0x</th></tr><tr class=''><th class='c1'>ServiceStack TypeSerializer</th><td>163</td><th>0x</th><td>1858665</td><td>1387874</td><td>3246539</td><td>32.4654</td><th>0x</th></tr><tr class='failed'><th class='c1'>Platform TextSerializer</th><td>133</td><th>0x</th><td>862809</td><td>-1</td><td>862808</td><td>8.6281</td><th>0x</th></tr>
</tbody>
</table>
<h3>Results of serializing and deserializing RegionDto 100000 times</h3><table>
<caption>* All times measured in ticks and payload size in bytes</caption><thead><tr><th>Serializer</th><th>Payload size</th><th>Larger than best</th><th>Serialization</th><th>Deserialization</th><th>Total</th><th>Avg per iteration</th><th>Slower than best</th></tr></thead>
<tbody>
<tr class=''><th class='c1'>Microsoft DataContractSerializer</th><td>209</td><th>19x</th><td>1453570</td><td>5074059</td><td>6527629</td><td>65.2763</td><th>14.63x</th></tr><tr class=''><th class='c1'>Microsoft JsonDataContractSerializer</th><td>38</td><th>3.45x</th><td>6540054</td><td>9404354</td><td>15944408</td><td>159.4441</td><th>35.73x</th></tr><tr class=''><th class='c1'>Microsoft BinaryFormatter</th><td>223</td><th>20.27x</th><td>3325424</td><td>3908285</td><td>7233709</td><td>72.3371</td><th>16.21x</th></tr><tr class=''><th class='c1'>NewtonSoft.Json</th><td>38</td><th>3.45x</th><td>1270896</td><td>4031662</td><td>5302558</td><td>53.0256</td><th>11.88x</th></tr><tr class='best-size best-time'><th class='c1'>ProtoBuf.net</th><td>11</td><th>1x</th><td>265568</td><td>180666</td><td>446234</td><td>4.4623</td><th>1x</th></tr><tr class=''><th class='c1'>ServiceStack TypeSerializer</th><td>32</td><th>2.91x</th><td>944880</td><td>226659</td><td>1171539</td><td>11.7154</td><th>2.63x</th></tr><tr class=''><th class='c1'>Platform TextSerializer</th><td>34</td><th>3.09x</th><td>339206</td><td>483204</td><td>822410</td><td>8.2241</td><th>1.84x</th></tr>
</tbody>
</table>
<h3>Results of serializing and deserializing ShipperDto 100000 times</h3><table>
<caption>* All times measured in ticks and payload size in bytes</caption><thead><tr><th>Serializer</th><th>Payload size</th><th>Larger than best</th><th>Serialization</th><th>Deserialization</th><th>Total</th><th>Avg per iteration</th><th>Slower than best</th></tr></thead>
<tbody>
<tr class=''><th class='c1'>Microsoft DataContractSerializer</th><td>235</td><th>6.91x</th><td>1812875</td><td>5325566</td><td>7138441</td><td>71.3844</td><th>8.60x</th></tr><tr class=''><th class='c1'>Microsoft JsonDataContractSerializer</th><td>64</td><th>1.88x</th><td>3148128</td><td>6775847</td><td>9923975</td><td>99.2398</td><th>11.96x</th></tr><tr class=''><th class='c1'>Microsoft BinaryFormatter</th><td>269</td><th>7.91x</th><td>3905161</td><td>4063577</td><td>7968738</td><td>79.6874</td><th>9.60x</th></tr><tr class=''><th class='c1'>NewtonSoft.Json</th><td>64</td><th>1.88x</th><td>1480562</td><td>4142159</td><td>5622721</td><td>56.2272</td><th>6.78x</th></tr><tr class='best-size best-time'><th class='c1'>ProtoBuf.net</th><td>34</td><th>1x</th><td>377276</td><td>452600</td><td>829876</td><td>8.2988</td><th>1x</th></tr><tr class=''><th class='c1'>ServiceStack TypeSerializer</th><td>54</td><th>1.59x</th><td>1205540</td><td>421944</td><td>1627484</td><td>16.2748</td><th>1.96x</th></tr><tr class=''><th class='c1'>Platform TextSerializer</th><td>58</td><th>1.71x</th><td>453336</td><td>717881</td><td>1171217</td><td>11.7122</td><th>1.41x</th></tr>
</tbody>
</table>
<h3>Results of serializing and deserializing SupplierDto 100000 times</h3><table>
<caption>* All times measured in ticks and payload size in bytes</caption><thead><tr><th>Serializer</th><th>Payload size</th><th>Larger than best</th><th>Serialization</th><th>Deserialization</th><th>Total</th><th>Avg per iteration</th><th>Slower than best</th></tr></thead>
<tbody>
<tr class=''><th class='c1'>Microsoft DataContractSerializer</th><td>497</td><th>4.56x</th><td>3190557</td><td>9330422</td><td>12520979</td><td>125.2098</td><th>6.41x</th></tr><tr class=''><th class='c1'>Microsoft JsonDataContractSerializer</th><td>255</td><th>2.34x</th><td>4528699</td><td>12310384</td><td>16839083</td><td>168.3908</td><th>8.61x</th></tr><tr class=''><th class='c1'>Microsoft BinaryFormatter</th><td>611</td><th>5.61x</th><td>7451708</td><td>6652933</td><td>14104641</td><td>141.0464</td><th>7.22x</th></tr><tr class=''><th class='c1'>NewtonSoft.Json</th><td>255</td><th>2.34x</th><td>2863702</td><td>8079124</td><td>10942826</td><td>109.4283</td><th>5.60x</th></tr><tr class='best-size best-time'><th class='c1'>ProtoBuf.net</th><td>109</td><th>1x</th><td>771980</td><td>1182693</td><td>1954673</td><td>19.5467</td><th>1x</th></tr><tr class=''><th class='c1'>ServiceStack TypeSerializer</th><td>180</td><th>1.65x</th><td>1643364</td><td>1371199</td><td>3014563</td><td>30.1456</td><th>1.54x</th></tr><tr class=''><th class='c1'>Platform TextSerializer</th><td>196</td><th>1.80x</th><td>1584234</td><td>2515026</td><td>4099260</td><td>40.9926</td><th>2.10x</th></tr>
</tbody>
</table>
<h3>Results of serializing and deserializing TerritoryDto 100000 times</h3><table>
<caption>* All times measured in ticks and payload size in bytes</caption><thead><tr><th>Serializer</th><th>Payload size</th><th>Larger than best</th><th>Serialization</th><th>Deserialization</th><th>Total</th><th>Avg per iteration</th><th>Slower than best</th></tr></thead>
<tbody>
<tr class=''><th class='c1'>Microsoft DataContractSerializer</th><td>248</td><th>13.05x</th><td>2006665</td><td>5471993</td><td>7478658</td><td>74.7866</td><th>10.47x</th></tr><tr class=''><th class='c1'>Microsoft JsonDataContractSerializer</th><td>61</td><th>3.21x</th><td>2980986</td><td>6477083</td><td>9458069</td><td>94.5807</td><th>13.25x</th></tr><tr class=''><th class='c1'>Microsoft BinaryFormatter</th><td>268</td><th>14.11x</th><td>3728791</td><td>3978913</td><td>7707704</td><td>77.0770</td><th>10.80x</th></tr><tr class=''><th class='c1'>NewtonSoft.Json</th><td>61</td><th>3.21x</th><td>1379210</td><td>3636864</td><td>5016074</td><td>50.1607</td><th>7.03x</th></tr><tr class='best-size best-time'><th class='c1'>ProtoBuf.net</th><td>19</td><th>1x</th><td>355713</td><td>358270</td><td>713983</td><td>7.1398</td><th>1x</th></tr><tr class=''><th class='c1'>ServiceStack TypeSerializer</th><td>51</td><th>2.68x</th><td>965408</td><td>356133</td><td>1321541</td><td>13.2154</td><th>1.85x</th></tr><tr class=''><th class='c1'>Platform TextSerializer</th><td>55</td><th>2.89x</th><td>447147</td><td>784372</td><td>1231519</td><td>12.3152</td><th>1.72x</th></tr>
</tbody>
</table>
</body>
</html>

